Component({
  properties: {
    selectedType: {
      type: null,
      value: '',
      observer(newVal) {
        this.handleSelectedType(newVal); // 监听变化，同步初始值
      }
    },
  },
  data: {
    activeType: '',
    types: ['饮食', '喝水', '体重', '洗护', '尿便', '记事', '异常', '用药'],
    // 各类型对应字段
    foodType: '',       // 饮食-种类（对应action.text）
    foodAmount: '',     // 饮食-分量（对应action.info）
    waterAmount: '',    // 喝水-量（对应action.text）
    weightValue: '',    // 体重-值（对应action.text）
    washOptions:['是','否'],
    washSelected: '',   // 洗护-是否（对应action.text）
    washTime: '',       // 洗护-时间（对应action.info）
    peePoopStatus: '',  // 尿便-状态（对应action.text）
    noteContent: '',    // 记事-内容（对应action.text）
    abnormalType: '',   // 异常-类型（对应action.text）
    medicationName: '', // 用药-名称（对应action.text）
    medicationDose: ''  // 用药-剂量（对应action.info）
  },
  methods: {
    // 处理父组件传入的selectedType（核心：解析action.text和action.info）
    handleSelectedType(selectedType) {
      if (!selectedType) return;

      // 1. 提取类型名称（activeType）
      let typeValue = '';
      if (typeof selectedType === 'object' && selectedType !== null) {
        typeValue = selectedType.title || ''; // 从对象中获取类型名称
      } else {
        typeValue = selectedType; // 字符串直接作为类型名称
      }

      // 2. 解析action.text和action.info，赋值到对应字段
      const action = typeof selectedType === 'object' ? selectedType.action || {} : {};
      this.setData({ activeType: typeValue }); // 更新当前类型

      // 根据类型匹配字段（核心映射逻辑）
      switch (typeValue) {
        case '饮食':
          this.setData({
            foodType: action.text || '',
            foodAmount: action.info || ''
          });
          break;
        case '喝水':
          this.setData({ waterAmount: action.text || '' });
          break;
        case '体重':
          this.setData({ weightValue: action.text || '' });
          break;
        case '洗护':
          this.setData({
            washSelected: action.text || '',
            washTime: action.info || ''
          });
          break;
        case '尿便':
          this.setData({ peePoopStatus: action.tags || '' });
          break;
        case '记事':
          this.setData({ noteContent: action.text || '' });
          break;
        case '异常':
          this.setData({ abnormalType: action.text || '' });
          break;
        case '用药':
          this.setData({
            medicationName: action.text || '',
            medicationDose: action.info || ''
          });
          break;
      }
    },

    // 原有输入事件（保持不变，确保子组件修改能同步到内部数据）
    onFoodTypeInput(e) { this.setData({ foodType: e.detail.value }); },
    onFoodAmountInput(e) { this.setData({ foodAmount: e.detail.value }); },
    onWaterInput(e) { this.setData({ waterAmount: e.detail.value }); },
    onWeightInput(e) { this.setData({ weightValue: e.detail.value }); },
    onWashChange(e) { this.setData({ washSelected: this.data.washOptions[e.detail.value] }); },
    onWashTimeInput(e) { this.setData({ washTime: e.detail.value }); },
    onPeePoopInput(e) { this.setData({ peePoopStatus: e.detail.value }); },
    onNoteInput(e) { this.setData({ noteContent: e.detail.value }); },
    onAbnormalTypeInput(e) { this.setData({ abnormalType: e.detail.value }); },
    onMedicationNameInput(e) { this.setData({ medicationName: e.detail.value }); },
    onMedicationDoseInput(e) { this.setData({ medicationDose: e.detail.value }); },
    onTypeChange(e) {
      const type = this.data.types[e.detail.value];
      this.setData({ selectedType: type }); // 切换类型时重置
    },

    // 保存按钮：整理数据并返回给父组件
    submitForm() {
      const { activeType } = this.data;
      let action = {};

      // 根据当前类型，将子组件数据映射为action.text和action.info
      switch (activeType) {
        case '饮食':
          action = {
            text: this.data.foodType,
            info: this.data.foodAmount
          };
          break;
        case '喝水':
          action = { text: this.data.waterAmount };
          break;
        case '体重':
          action = { text: this.data.weightValue };
          break;
        case '洗护':
          action = {
            text: this.data.washSelected,
            info: this.data.washTime
          };
          break;
        case '尿便':
          action = { tags: this.data.peePoopStatus };
          break;
        case '记事':
          action = { text: this.data.noteContent };
          break;
        case '异常':
          action = { text: this.data.abnormalType };
          break;
        case '用药':
          action = {
            text: this.data.medicationName,
            info: this.data.medicationDose
          };
          break;
        default:
          wx.showToast({ title: '请选择类型', icon: 'none' });
          return;
      }

      // 整理返回数据（包含类型名称和更新后的action）
      const result = {
        title: activeType, // 类型名称（与父组件selectedType.title对应）
        action: action     // 包含text和info的对象
      };

      // 通过事件将数据传回父组件
      this.triggerEvent('updateData', result);
      wx.showToast({ title: '保存成功' });
    }
  }
})